From 1d802881eb3e4f2042efe9be51d74f0ae14d32b9 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Thu, 22 Oct 2020 10:02:22 -0400 Subject: [PATCH] stack: Change ordering for removal Unparent the child widget before tearing down its stack page. This is necessary so a11y can still access the stack page accessible to emit change notification when it learns that the child is removed. --- gtk/gtkstack.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gtk/gtkstack.c b/gtk/gtkstack.c index b97ebb54bb..e1a24b7763 100644 --- a/gtk/gtkstack.c +++ b/gtk/gtkstack.c @@ -1467,16 +1467,12 @@ stack_remove (GtkStack *stack, if (child_info == NULL) return; - priv->children = g_list_remove (priv->children, child_info); - g_signal_handlers_disconnect_by_func (child, stack_child_visibility_notify_cb, stack); was_visible = gtk_widget_get_visible (child); - g_clear_object (&child_info->widget); - if (priv->visible_child == child_info) { if (in_dispose) @@ -1490,6 +1486,10 @@ stack_remove (GtkStack *stack, gtk_widget_unparent (child); + g_clear_object (&child_info->widget); + + priv->children = g_list_remove (priv->children, child_info); + g_object_unref (child_info); if (!in_dispose && -- 2.30.2